汉字进行 UTF-8 编码,每个汉字占3个字节。进行 GDK 编码,每个汉字占2个字节。ISO-8859-1 则占一个字节。
为什么要有包装类
因为 Java 的某些特性和 API,例如泛型和集合,不支持基本数据类型,所以必须把基本数据类型转换为包装类的对象。
基本数据类型对应的包装类
1 2 3 4 5 6 7 8
| byte -> Byte short -> Short int -> Integer long -> Long float -> Float double -> Double char -> Character boolean -> Boolean
|
基本数据类型和包装类之间的转换
装箱
装箱就是把基本数据类型转换为包装类对象
1 2
| Integer i = new Integer(10) Integer i = 10;
|
拆箱
拆箱就是把包装类的对象转换为基本数据类型
1 2 3
| Integer i = new Integer(10); int a = i.intValue(); int a = i;
|
字符串转换为基本数据类型
1 2 3
| String str = "123"; int i = Integer.parseInt(str); int i = Integer.ValueOf(str);
|
基本数据类型转换为字符串
1 2 3
| int a = 10; String str = a + ""; String str = String.valueOf(a);
|
java.lang.String
特点:
- 字符串对象的不可变性
- String 类型是 final 修饰的,不能被继承
内部的存储结构
- JDK 1.9 之前: char []
- JDK 1.9 之后: byte[]
常用方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 1. length: 求字符串的长度 2. trim: 去掉前后空格 3. equals: 比较两个字符串内容是否相同 4. equalsIgnoreCase:比较两个字符串内容是否相同,忽略大小写 5. toUpperCase: 转大写 6. toLowerCase: 转小写 7. concat:字符串拼接 8. contains:是否包含 9. toCharArray:转换为字符数组 10. charAt:返回某个索引位置的字符 11. itern:把结果放到常量池中 12. startWith:判断字符串是否以 xxx 开头 13. endsWith:判断字符串是否以 xxx 结尾 14. indexOf:查找某个字符或者字符串在当前字符串中的索引位置,是从左往右进行查找 15. lastIndexOf:查找某个字符或者字符串在当前字符串中的索引位置,是从右往左进行查找 16. subString:从当前字符串截取一个子串 17. matches:判断当前字符串是否匹配xx规则 18. replace:替换字符串,不支持正则 19. replaceFirst:替换首次出现的字符串,支持正则 20. replaceAll:替换所有出现的字符串,支持正则 21. split:拆分 22. isEmpty:判断当前字符串是否为空 23. getBytes:将当前字符串按照某种字符编码进行编码,从而转为字节序列 24. String(bytes[]…):把字符序列按照某种字符编码进行解码,从而转换为字符 25. String(char[]…):把字符串数组重新构建为一个字符串
|
与字节数据的转换
1 2
| 转为字节数组(编码):方法为 getBytes(),返回值为 byes[] 转为字符串(解码):方法为 String(byes[])
|
与字符数据的转换
1 2
| 转成字符数组:toCharArray() 转为字符串:new String(char[])
|